﻿using System.Drawing;
using System.Windows.Forms;
using NGridDrawer.Partitions;
using NGridDrawer.Report.Layout;


namespace NGridDrawer.Report
{
    /// <LastUpdate author="Blaise Braye" Date="15/06/2008 18:24"/>
    /// <summary>
    /// Defines a report drawer
    /// </summary>
    internal interface IReportDrawer
    {
        /// <summary>Get/Set Component Property</summary>
        IPartitionDrawer Drawer { get; }

        /// <summary>Get/Set Footer Property</summary>
        IBlock Footer { get; set; }

        /// <summary>Get/Set Header Property</summary>
        IBlock Header { get; set; }

        /// <summary>Get/Set Title Property</summary>
        IBlockTitle Title { get; set; }

        /// <summary>Get/Set GridPadding Property</summary>
        Padding GridPadding { get; set; }

        /// <summary>
        /// Draw all elements of a <see cref="PartitionGrid"/> in a custom report
        /// </summary>
        /// <param name="graphic">graphics used to draw</param>
        /// <param name="clipBounds">Clip area of the report</param>
        /// <returns>
        /// Component has more pages to draw?
        /// </returns>
        bool Draw(Graphics graphic, RectangleF clipBounds);
    }
}